<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/model/DAO/DAOManager.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/model/Service/Service.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/IndicatorValue.php';

/**
 * Класс, отвечающий за работу со значениями индикатора
 */
class IndicatorValueService extends Service {
	
	
	protected $respDAO;
	
	public function __construct($daoManager){
		parent::__construct($daoManager);
		parent::createDAO("IndicatorValueDAO");
		$this->respDAO = $this->daoManager->createDAO("ResponsibilityDAO");
	}
	
	/**
	 * Сохранить значение идикатора
	 * @param IndicatorValue $indicatorValue Значение индикатора
	 */
	public function save($indicatorValue){
		if($indicatorValue->getIdentity() == null){
			return $this->dao->create($indicatorValue);
		}else{
			return $this->dao->update($indicatorValue);
		}
	}
	
	/**
	 * Прочитиать значение индикатора
	 * @param Int $identity Идентефикатор значения индиктора
	 */
	public function read($identity){
		$indVal = $this->dao->read($identity);
		$indVal->setResponsibility($this->respDAO->read($indVal->getResponsibility()->getIdentity()));
		return $indVal;
	}
	
	/**
	 * Удалить значение индикатора
	 * @param Int $identity Идентефикатор удаляемого значения 
	 */
	public function delete($identity){
		return $this->dao->delete($identity);
	}
	/**
	 * возвращает indicatorValue ооответвующие данной Обязанности 
	 * @param int $identity Идентефикатор Обязанности
	 */
	public function getByResponsibility($identity){
		$indvals =  $this->dao->getByResponsibility($identity);
		foreach ($indvals as $indval){
			$indVal->setResponsibility($this->respDAO->read($indVal->getResponsibility()->getIdentity()));
		}
		return $indvals;
		
	}
	
}
?>